package javaCode.chapter07.Homework.homework13;

/*
案例题目描述：
1、做一个Student类，Student类有名称(name)，性别(sex)，年龄(age)，学号(stu_id)，做合理封装，通过构造器在创建对象时将4个属性赋值
2、写一个Teacher类，Teacher类有名称(name)，性别(sex)，年龄(age)，工龄(work_age)，做合理封装，通过构造器在创建对象时将4个属性赋值
3、抽取一个父类Person类，将共同属性和方法放到Person类
4、学生需要有学习的方法(study)，在方法里写上 "我承诺，我会好好的学习。"
5、教师需要有教学的方法(teach)，在方法里写上 "我承诺，我会认真教学。"
6、学生和教师都有玩的方法(play)，学生玩的是足球，老师玩的是象棋，此方法返回字符串，分别返回 "xx爱玩足球"和"xx爱玩象棋" 。因为玩的方名称一样，所以要求此方法定义在父类中，子类实现重写。
7、定义多态数组，里面保存2个学生和2个教师，要求按年龄从高到低排序
8、定义方法，形参为Person，功能调用学生的study或教师的teacher方法
 */
public class Homework13 {
    public static void main(String[] args) {

         /*       Student student = new Student("小东", "男", 18, "1001");
        student.printInfo();

        Teacher teacher = new Teacher("大东", "男", 27, 3);
        teacher.printInfo();*/

        Person[] people = new Person[4];
        people[0] = new Student("张三","男",17,"1001");
        people[1] = new Student("李四","男",16,"1002");
        people[2] = new Teacher("田五","男",30,5);
        people[3] = new Teacher("王二","男",25,3);

        //创建对象
        Homework13 homework13 = new Homework13();
        homework13.bubbleSort(people);

        for (int i = 0; i < people.length; i++) {
            System.out.println(people[i]);
        }



    }

    //定义方法，形参为Person，功能调用学生的study或教师的teacher方法
    //这里分析会使用到向下转型 和 类型判断
    public void test(Person p) {
        if (p instanceof Student) {
//            Student student = (Student) p;
//            student.study();
            ((Student) p).study();
        }else if (p instanceof Teacher) {
//            Teacher teacher = (Teacher) p;
//            teacher.teach();
            ((Teacher)p).teach();
        }else {
            System.out.println("do nothing...");
        }
    }


    //方法，完成年龄从高到底排序
    public void bubbleSort(Person[] people){
        //定义对象 方便交换
        Person temp = null;
        for (int i = 0; i < people.length - 1; i++) {
            for (int j = 0; j < people.length - i - 1; j++) {
                if (people[j].getAge() < people[j+1].getAge()) {
                    temp = people[j];
                    people[j] = people[j+1];
                    people[j+1] = temp;
                }
            }
        }
    }
}
